This invention is one of a set of improvements that have been made to create IBM's Prolog for the 370. As the name implies, the compiler has been optimized for IBM's 370/XA environment. However, the invention will perform equally well in any other thirty-two bit architecture. So for example, the invention could be practiced on an Intel 80X86 processor or a Motorola 680X0.
The first Prolog interpreter was developed in France by Phillipe Roussel in 1972. His early work was expanded upon and first found a home on an IBM S/370 via work done at the University of Waterloo, Canada. A good summary of the history and content of the Prolog language is contained in a report by David H. D. Warren, "Implementing Prolog", DAI Research Report No. 39 (May 1977).
In his paper, Mr. Warren describes the two basic parts of the Prolog language: logical statements known as Horn clauses and a control language used by the programmer in constructing a proof. Section 4.1 discloses the Prolog Syntax and Terminology that is basic to the understanding of this invention. The language originated in formal proofs. So, for example, P.fwdarw.Q & R & S is interpreted as, P if Q and R and S. A careful reading of section 4.1 will acquaint the uninitiated reader with an appreciation of the Prolog syntax and major commands.
The Prolog instructions include: get, put, unify, procedural, and indexing instructions. A good summary of the Prolog instruction set is found in another article by Mr. Warren entitled, AN ABSTRACT PROLOG INSTRUCTION SET, Technical Note 309, SRI Project 4776 (October 1983). Mr. Warren's article describes the classical Prolog syntax that is accepted as standard to all Prolog Compilers/Interpreters. Further clarification of the Prolog language is found in, A TUTORIAL ON THE WARREN ABSTRACT MACHINE FOR COMPUTATIONAL LOGIC, Gabriel et al., Argonne National Laboratory (June 1985).
The classical Prolog system is referred to as the Warren Abstract Machine (WAM) in honor of its inventor. The architecture of the WAM is disclosed in Mr. Warren's, An Abstract Prolog Instruction Set. The invention is an improvement on the WAM to address some of the problems that Mr. Warren failed to address.
A recent U.S. Pat. No. 4,546,432 to NEC, entitled Prolog Processing System, discusses an efficient method for managing the registers associated with the various Prolog stacks. However, the patent fails to disclose a method for increasing the Prolog address space and improving overall performance by more effectively managing pointers.
As mentioned above, the capability described in recent articles still employs indirect addressing techniques described in the Warren article. This is an unnecessary restriction that is overcome by this invention.